﻿using MySql.Data.MySqlClient;
using System.Data;

namespace CD
{
    public class AsignacionServiciosAsamblea : BDConexion
    {

        #region Constructores

        /// <summary>
        /// Constructor en donde se asignan los nombres de los procedimientos almacenados.
        /// </summary>
        public AsignacionServiciosAsamblea() 
        { 

            ProcedimientoMan = "ASIGNACION_SERVICIOS_ASAMBLEA_MAN";
            ProcedimientoLis = "ASIGNACION_SERVICIOS_ASAMBLEA_LIS";
            ProcedimientoSelBus = "ASIGNACION_SERVICIOS_ASAMBLEA_LIS_BUS";

        }

        #endregion

        #region Metodos y Funciones Privadas

        /// <summary>
        /// Funcion para realizar los Mantenimientos.
        /// </summary>
        /// <param name="p_sAccion">Accion a realizar(Actualizar|Modificar|Eliminar).</param>
        /// <param name="p_sUsuario">Usuario que realiza el Mantenimiento.</param>
        /// <param name="p_oAsignacionServiciosAsamblea">Objeto</param>
        /// <returns>String con el resultado del mantenimiento.</returns>
        private string RealizarMantenimiento(string p_sAccion, string p_sUsuario, CE.AsignacionServiciosAsamblea p_oAsignacionServiciosAsamblea)
        {
            var sResultado = string.Empty;
            using (MySqlCommand oMySqlCommand = new MySqlCommand(ProcedimientoMan))
            {
                oMySqlCommand.Parameters.Add(ParametroAccion, MySqlDbType.VarChar, 100).Value = p_sAccion;
                oMySqlCommand.Parameters.Add(ParametroUsuario, MySqlDbType.VarChar, 100).Value = p_sUsuario;
                oMySqlCommand.Parameters.Add(ParametroId, MySqlDbType.Int64, 20).Value = p_oAsignacionServiciosAsamblea.ID_ASIGNACION_SERVICIO_ASAMBLEA;
                oMySqlCommand.Parameters.Add("ID_PROGRAMACION_ASAMBLEA", MySqlDbType.Int64, 20).Value = p_oAsignacionServiciosAsamblea.ID_PROGRAMACION_ASAMBLEA;
                oMySqlCommand.Parameters.Add("ID_SERVICIO", MySqlDbType.Int64, 20).Value = p_oAsignacionServiciosAsamblea.ID_SERVICIO;
                oMySqlCommand.Parameters.Add("ID_SERVIDOR", MySqlDbType.Int64, 20).Value = p_oAsignacionServiciosAsamblea.ID_SERVIDOR;
                sResultado = EjecutarComando(oMySqlCommand);
            }
            return sResultado;
        }

#endregion

        #region Metodos y Funciones Publicas

        /// <summary>
        /// Funcion para borrar objeto.
        /// </summary>
        /// <param name="p_oAsignacionServiciosAsamblea">Entidad Objeto.</param>
        /// <returns>Strign con el resultado.</returns>
        public string Eliminar(CE.AsignacionServiciosAsamblea p_oAsignacionServiciosAsamblea, string p_sUsuario)
        {
            return RealizarMantenimiento(AccionEliminar, p_sUsuario, p_oAsignacionServiciosAsamblea);
        }
        
        /// <summary>
        /// Funcion para modificar objeto.
        /// </summary>
        /// <param name="p_oAsignacionServiciosAsamblea">Entidad Objeto.</param>
        /// <returns>Strign con el resultado.</returns>
        public string Actualizar(CE.AsignacionServiciosAsamblea p_oAsignacionServiciosAsamblea, string p_sUsuario)
        {
            return RealizarMantenimiento(AccionActualizar, p_sUsuario, p_oAsignacionServiciosAsamblea);
        }

        /// <summary>
        /// Funcion para agregar objeto.
        /// </summary>
        /// <param name="p_oAsignacionServiciosAsamblea">Entidad Objeto.</param>
        /// <returns>Strign con el resultado.</returns>
        public string Agregar(CE.AsignacionServiciosAsamblea p_oAsignacionServiciosAsamblea, string p_sUsuario)
        {
            return RealizarMantenimiento(AccionAgregar,p_sUsuario, p_oAsignacionServiciosAsamblea);
        }

        /// <summary>
        /// Funcion para obtener la lista completa de objetos.
        /// </summary>
        /// <returns>Lista de Objetos.</returns>
        public DataTable Listar()
        {
            var oDataTable = new DataTable();
            using (MySqlCommand oMySqlCommand = new MySqlCommand(ProcedimientoLis))
            {
                oDataTable = EjecutarConsulta(oMySqlCommand);
            }
            return oDataTable;
        }


        public DataTable ListarPorBus(string p_ValorBus)
        {
            var oDataTable = new DataTable();
            using (MySqlCommand oMySqlCommand = new MySqlCommand(ProcedimientoSelBus))
            {
                oMySqlCommand.Parameters.Add(ParametroValor, MySqlDbType.VarChar, 100).Value = p_ValorBus;
                oDataTable = EjecutarConsulta(oMySqlCommand);
            }
            return oDataTable;
        }
#endregion
    }
}
